# -*- coding: utf-8 -*-

"""
  @author: tangliqi
  @date: 2022/11/25 10:49
  @python version: 3.6 
  @contact me: 110
  ---------------------------------------
  @desc: python设计模式实现 => 门面模式.py
"""


# 门面模式非常好理解，实现也不复杂。
# 主要用于解决接口应用的复用性和易用性之间的矛盾。
# 我们用一个展示计算机信息的接口为例。
# 计算中有 CPU / 内存 / 磁盘 等信息，每个信息都有自己的接口。
# 但是我们一般使用时，都是关注整个计算机整体的信息情况，没必要一个个单独去看。
# 这时候提供一个统一的接口查看整个计算机的基本信息就非常好了。

class Cpu:
    def info(self):
        print("i7-8700,8核")


class Memory:
    def info(self):
        print("16GB内存")


class Disk:
    def info(self):
        print("512GB")


class ComputerInfo:
    def __init__(self):
        self.cpu = Cpu()
        self.mem = Memory()
        self.disk = Disk()

    def show(self):
        self.cpu.info()
        self.mem.info()
        self.disk.info()


if __name__ == '__main__':
    # 单独使用，需要调用3个接口，麻烦
    Cpu().info()
    Memory().info()
    Disk().info()

    # 通过门面模式封装成一个，只需要调用一个
    ComputerInfo().show()
